<template>
  <div>
    <a-input disabled :value="name" :size="size" :bordered="bordered" />
  </div>
</template>
<script lang="ts" setup>
  import { ref, watchEffect } from 'vue';
  import { getDepartment } from '/@/api/system/department';
  import { getUser } from '/@/api/system/user';
  import { useUserStore } from '/@/store/modules/user';
  import { dateUtil } from '/@/utils/dateUtil';
  const userStore = useUserStore();

  const props = defineProps({
    value: String,
    size: String,
    infoType: Number,
    bordered: {
      type: Boolean,
      default: true,
    },
    loadAgain: {
      type: Boolean,
      default: false,
    },
  });

  const emit = defineEmits(['update:value']);

  const name = ref<string>();

  watchEffect(async () => {
    if (props && props.value) {
      //当前用户
      if (props.infoType === 0) {
        //判断传入的值 是不是当前登录人 或需要二次加载  就不需要发请求获取用户信息了
        if (props.value === userStore.getUserInfo.id || props.loadAgain) {
          name.value = userStore.getUserInfo.name;
          emit('update:value', userStore.getUserInfo.id);
        } else {
          //如果不是当前登陆人  需要用户id  查询当前用户信息
          const userInfo = await getUser(props.value);
          name.value = userInfo.name;
        }
      }

      //当前部门
      if (props.infoType === 1) {
        //判断传入的值 是不是当前登陆人的部门 或需要二次加载  就不需要发请求获取用户信息了
        if (props.value === userStore.getUserInfo.departmentId || props.loadAgain) {
          name.value = userStore.getUserInfo.departmentName;
          emit('update:value', userStore.getUserInfo.departmentId);
        } else {
          //如果不是当前登陆人  需要用户id  查询当前用户信息
          const dept = await getDepartment(props.value);
          name.value = dept.name;
        }
      }

      //当前时间
      if (props.infoType === 2) {
        //如果是时间 需要二次加载展示当前时间  不需要则默认显示参数时间
        name.value = props.loadAgain
          ? dateUtil(new Date()).format('YYYY-MM-DD HH:mm:ss')
          : props.value;
        emit('update:value', name.value);
      }
    } else {
      //当前用户
      if (props.infoType === 0) {
        //判断传入的值 是不是当前登录人  就不需要发请求获取用户信息了
        name.value = userStore.getUserInfo.name;
        emit('update:value', userStore.getUserInfo.id);
      }

      //当前部门
      if (props.infoType === 1) {
        //判断传入的值 是不是当前登陆人的部门  就不需要发请求获取用户信息了
        name.value = userStore.getUserInfo.departmentName;
        emit('update:value', userStore.getUserInfo.departmentId);
      }

      //当前时间
      if (props.infoType === 2) {
        //如果是时间 默认显示参数时间
        name.value = dateUtil(new Date()).format('YYYY-MM-DD HH:mm:ss');
        emit('update:value', name.value);
      }
    }
  });
</script>
